using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class EnemyStats : CharacterStats
{
    private Enemy enemy;
    private ItemDrop myDropSystem;//物品掉落
    public Stat soulsDropAmount;

    [Header("等级详情")]
    [SerializeField] private int level = 1; // 等级

    [Range(0f, 1f)]
    [SerializeField] private float percantageModifier = .4f; // 百分比修正值

    // 初始化
    protected override void Start()
    {
        soulsDropAmount.SetDefaultValue(50);

        ApplyLevelModifuers(); // 应用等级修正
        base.Start();
        enemy = GetComponent<Enemy>();
        myDropSystem = GetComponent<ItemDrop>();
    }

    // 受到伤害
    public override void TakeDamage(int _damage)
    {
        base.TakeDamage(_damage);
    }

    // 死亡
    protected override void Die()
    {
        base.Die();
        enemy.Die();
        PlayerManager.instance.currency += soulsDropAmount.GetValue();
        myDropSystem.GenerateDrop();//物品掉落  

        Destroy(gameObject, 5f);
    }

    // 应用等级修正
    private void ApplyLevelModifuers()
    {
        // Modify(strength); // 力量
        // Modify(agility); // 敏捷
        // Modify(intelligence); // 智力
        // Modify(vitality); // 生命力

        Modify(damage); // 伤害
        // Modify(critChance); // 暴击率
        // Modify(critPower); // 暴击伤害

        Modify(maxHealth); // 最大生命值
        // Modify(armor); // 护甲
        // Modify(evasion); // 闪避
        // Modify(magicResistance); // 魔法抗性

        // Modify(fireDamage); // 火焰伤害
        // Modify(iceDamage); // 冰霜伤害
        // Modify(lightingDamage); // 闪电伤害

        Modify(soulsDropAmount); // 货币
    }

    // 修正属性
    private void Modify(Stat _stat)
    {
        for (int i = 1; i < level; i++)
        {
            float Modifier = _stat.GetValue() * percantageModifier; // 计算修正值
            _stat.AddModifier(Mathf.RoundToInt(Modifier)); // 添加修正值
        }
    }
}